package com.skh.math;

/**
 * @Author: skh
 * @Date: 2020/3/26 9:55
 * @Description: 6 和 9 组成的最大数字
 */
public class Maximum69Number {

    /**
     * 给你一个仅由数字 6 和 9 组成的正整数 num。
     *
     * 你最多只能翻转一位数字，将 6 变成 9，或者把 9 变成 6 。
     *
     * 请返回你可以得到的最大数字。
     *
     *  
     *
     * 示例 1：
     *
     * 输入：num = 9669
     * 输出：9969
     * 解释：
     * 改变第一位数字可以得到 6669 。
     * 改变第二位数字可以得到 9969 。
     * 改变第三位数字可以得到 9699 。
     * 改变第四位数字可以得到 9666 。
     * 其中最大的数字是 9969 。
     * 示例 2：
     *
     * 输入：num = 9996
     * 输出：9999
     * 解释：将最后一位从 6 变到 9，其结果 9999 是最大的数。
     * 示例 3：
     *
     * 输入：num = 9999
     * 输出：9999
     * 解释：无需改变就已经是最大的数字了。
     */

    public int maximum69Number (int num) {
        //找到第一个6的数2,把它变成9
        String numStr = String.valueOf(num);
        StringBuilder sb = new StringBuilder();
        boolean flag = false;
        for (char c : numStr.toCharArray()) {
            if (flag) {
                sb.append(c);
            } else {
                if (c == '6') {
                    sb.append(9);
                    flag = true;
                } else {
                    sb.append(c);
                }
            }
        }

        return Integer.valueOf(sb.toString());
    }

    public int maximum69Number1 (int num) {
        //找到第一个6的数2,把它变成9
        StringBuilder sb = new StringBuilder(String.valueOf(num));
        for (int i = 0; i < sb.length(); i++) {
            if (sb.charAt(i) == '6') {
                sb.setCharAt(i, '9');
                break;
            }
        }
        return Integer.parseInt(sb.toString());
    }

    public static void main(String[] args) {
        Maximum69Number maximum69Number = new Maximum69Number();
        int i = maximum69Number.maximum69Number1(9699);
        System.out.println("i = " + i);
    }
}
